/*
 * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.konan.test.cli;

import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;

import java.io.File;
import java.util.regex.Pattern;

/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateCliTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("native/native.tests/cli-tests/testData/cli")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class NativeCliTestGenerated extends AbstractNativeCliTest {
  private void runTest(String testDataFilePath) {
    KotlinTestUtils.runTest(this::doNativeTest, this, testDataFilePath);
  }

  public void testAllFilesPresentInCli() {
    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/cli-tests/testData/cli"), Pattern.compile("^(.+)\\.args$"), null, false);
  }

  @TestMetadata("emptyLlvmPasses.args")
  public void testEmptyLlvmPasses() {
    runTest("native/native.tests/cli-tests/testData/cli/emptyLlvmPasses.args");
  }

  @TestMetadata("experimentalCheckers.args")
  public void testExperimentalCheckers() {
    runTest("native/native.tests/cli-tests/testData/cli/experimentalCheckers.args");
  }

  @TestMetadata("extraCheckers.args")
  public void testExtraCheckers() {
    runTest("native/native.tests/cli-tests/testData/cli/extraCheckers.args");
  }

  @TestMetadata("kt68673_no_input.args")
  public void testKt68673_no_input() {
    runTest("native/native.tests/cli-tests/testData/cli/kt68673_no_input.args");
  }

  @TestMetadata("kt68673_smoke0.args")
  public void testKt68673_smoke0() {
    runTest("native/native.tests/cli-tests/testData/cli/kt68673_smoke0.args");
  }

  @TestMetadata("kt68673_with_tr.args")
  public void testKt68673_with_tr() {
    runTest("native/native.tests/cli-tests/testData/cli/kt68673_with_tr.args");
  }

  @TestMetadata("kt68673_wrong_output_kind.args")
  public void testKt68673_wrong_output_kind() {
    runTest("native/native.tests/cli-tests/testData/cli/kt68673_wrong_output_kind.args");
  }

  @TestMetadata("llvmIrDumpDirectoryDoesntExist.args")
  public void testLlvmIrDumpDirectoryDoesntExist() {
    runTest("native/native.tests/cli-tests/testData/cli/llvmIrDumpDirectoryDoesntExist.args");
  }

  @TestMetadata("reportDetailedPerfPsi1stPhase.args")
  public void testReportDetailedPerfPsi1stPhase() {
    runTest("native/native.tests/cli-tests/testData/cli/reportDetailedPerfPsi1stPhase.args");
  }

  @TestMetadata("reportDetailedPerfPsi1stPhaseWithInlinedFunInKlib.args")
  public void testReportDetailedPerfPsi1stPhaseWithInlinedFunInKlib() {
    runTest("native/native.tests/cli-tests/testData/cli/reportDetailedPerfPsi1stPhaseWithInlinedFunInKlib.args");
  }

  @TestMetadata("reportPerf.args")
  public void testReportPerf() {
    runTest("native/native.tests/cli-tests/testData/cli/reportPerf.args");
  }

  @TestMetadata("reportPerfPsi.args")
  public void testReportPerfPsi() {
    runTest("native/native.tests/cli-tests/testData/cli/reportPerfPsi.args");
  }

  @TestMetadata("reportPerfPsi1stPhase.args")
  public void testReportPerfPsi1stPhase() {
    runTest("native/native.tests/cli-tests/testData/cli/reportPerfPsi1stPhase.args");
  }

  @TestMetadata("reportPerfPsi2ndPhase.args")
  public void testReportPerfPsi2ndPhase() {
    runTest("native/native.tests/cli-tests/testData/cli/reportPerfPsi2ndPhase.args");
  }

  @TestMetadata("reportPerfWithError.args")
  public void testReportPerfWithError() {
    runTest("native/native.tests/cli-tests/testData/cli/reportPerfWithError.args");
  }

  @TestMetadata("simple.args")
  public void testSimple() {
    runTest("native/native.tests/cli-tests/testData/cli/simple.args");
  }

  @TestMetadata("syntaxError_lt.args")
  public void testSyntaxError_lt() {
    runTest("native/native.tests/cli-tests/testData/cli/syntaxError_lt.args");
  }

  @TestMetadata("syntaxError_psi.args")
  public void testSyntaxError_psi() {
    runTest("native/native.tests/cli-tests/testData/cli/syntaxError_psi.args");
  }

  @TestMetadata("threadSanitizer.args")
  public void testThreadSanitizer() {
    runTest("native/native.tests/cli-tests/testData/cli/threadSanitizer.args");
  }

  @TestMetadata("threadSanitizerPagedAllocator.args")
  public void testThreadSanitizerPagedAllocator() {
    runTest("native/native.tests/cli-tests/testData/cli/threadSanitizerPagedAllocator.args");
  }

  @TestMetadata("warningsSuppressionDisablesErrors_Native.args")
  public void testWarningsSuppressionDisablesErrors_Native() {
    runTest("native/native.tests/cli-tests/testData/cli/warningsSuppressionDisablesErrors_Native.args");
  }
}
